package com.dys.mychar;

/**
 * @className: com.dys.mychar.CharTest
 * @description: 字符类型
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/06/12 下午9:18
 */
public class CharTest {
    public static void main(String[] args) {
        calculationResult();
    }

    /**
     * 字符类型：单引号引起来的单个字符
     */
    public static void testChar() {
        // 声明字符类型的变量: 字母、数字、符合、中、空格都是字符，占2个字节
        char ch = 'a';
        System.out.println(ch);
        char ch1 = 'A';
        System.out.println(ch1);
        char ch2 = '?';
        System.out.println(ch2);
        char ch3 = '中';
        System.out.println(ch3);
        char ch4 = '!';
        System.out.println(ch4);
        char ch5 = '4';
        System.out.println(ch5);
        char ch6 = ' ';
        System.out.println(ch6);
    }

    /**
     * 转义字符：\将后面的普通字符转换为特殊含义
     */
    public static void testChar2() {
        char ch1 = '\n';
        System.out.println("aaaa" + ch1 + "bbbb");
        System.out.println("---------------------");
        // \n 换行
        System.out.println("aaaa\nbbbb");
        // \t 前后一共8个字符
        System.out.println("aaaaaaa\tbbbb");
        // \b 向前退一格
        System.out.println("aaa\bbbbb");
        // \r 回车:将光标到本行开头
        System.out.println("aaa\rbbbb");
        // \" 将双引号原样输出
        System.out.println("\"Java\"");
        // \‘ 将单引号原样输出
        System.out.println("\'Java\'");
        // \\ 将斜杠原样输出
        System.out.println("\\Java\\");
    }

    /**
     * 字符计算结果
     */
    public static void calculationResult() {
        // char类型我们看到的是它本身的字面常量，但是在底层计算的时候，是按照一个码进行计算的，这个码就是ASCII码
        // 之前说char是按照Unicode码表进行存储的，是因为Unicode兼容了ASCII码，Unicode的前128位是ASCII码
        char ch1 = 'A';
        System.out.println(ch1);
        System.out.println(ch1 + 90);
        System.out.println(155 - ch1);

        char ch2 = '中';
        System.out.println(ch2);
        System.out.println(ch2 + 100);
        System.out.println(20113 - ch2);

        // 转换
        int num1 = (int) ch2;
        System.out.println(num1);

        char ch3 = (char) 20013;
        System.out.println(ch3);

        int num2 = '中';
        System.out.println(num2);

        char ch4 = 20013;
        System.out.println(ch4);

        // 面试题
        char ch5 = '2' + 2;
        System.out.println(ch5);
    }
}
